// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
// #include <assert.h>
//
// typedef struct SqList {
//     int* data;
//     int length;
//     int maxsize;
// }SqList;
//
// void InitSQ(SqList* L) {
//     L->data=NULL;
//     L->length=L->maxsize=0;
// }
//
// void Full(SqList* L) {
//     if(L->length==L->maxsize) {
//         int NewLength=L->length==0?4:2*L->maxsize;
//         int* tmp=(int*)realloc(L->data,sizeof(int)*NewLength);
//         if(tmp==NULL) {
//             exit(1);
//         }
//         L->data=tmp;
//         L->maxsize=NewLength;
//     }
// }
//
// void InsertBack(SqList* L, int elem) {
//     if (L == NULL) return;
//     Full(L);
//     L->data[L->length] = elem;
//     L->length++;
// }
//
// void Print(SqList* L) {
//     for(int i=0;i<L->length;i++) {
//         printf("%d ",L->data[i]);
//     }
//     printf("\n");
// }
//
// void Destroy(SqList* L) {
//     if(L == NULL) return;
//     free(L->data);
//     L->data = NULL;
//     L->length = L->maxsize = 0;
// }
//
// int Mid(SqList* A,SqList* B) {
//     assert(A&&B&&A->data&&B->data);
//     assert(A->length==B->length);
//     //先把两个有序序列合成新的有序序列
//     int a=0;
//     int b=0;
//     int c=0;
//     SqList C;
//     InitSQ(&C);
//     C.maxsize=A->length+B->length;
//     C.data=(int*)malloc(sizeof(int)*C.maxsize);
//     if(C.data==NULL) {
//         exit(1);
//     }
//     while (a<A->length&&b<B->length) {
//         if(A->data[a]<B->data[b]) {
//             C.data[c++]=A->data[a++];
//         }else {
//             C.data[c++]=B->data[b++];
//         }
//     }
//     while (a<A->length) {
//         C.data[c++]=A->data[a++];
//     }
//     while (b<B->length) {
//         C.data[c++]=B->data[b++];
//     }
//     C.length=c;//注意别忘
//     //找出两个序列的中位数
//     if(C.length%2==1) {
//         return C.data[C.length/2];
//     }else {
//         return (C.data[(C.length/2)-1]+C.data[C.length/2])/2;
//     }
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     SqList A;
//     SqList B;
//     InitSQ(&A);
//     InitSQ(&B);
//     InsertBack(&A,1);
//     InsertBack(&A,3);
//     InsertBack(&A,5);
//     InsertBack(&A,7);
//     InsertBack(&A,9);
//     InsertBack(&B,2);
//     InsertBack(&B,4);
//     InsertBack(&B,6);
//     InsertBack(&B,8);
//     InsertBack(&B,10);
//     int num=Mid(&A,&B);
//     printf("中位数:%d\n",num);
//     Destroy(&A);
//     Destroy(&B);
//     return 0;
// }